package pe.com.cotelasa.scp.dao.impl;

import java.io.Serializable;
import java.util.Date;
import java.util.logging.Logger;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import pe.com.cotelasa.common.dao.DaoImpl;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.dao.IDAOIgv;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.entidad.Igv;

/**
 * @author usuario
 */
@Repository("daoIgv")
public class DAOIgvImpl extends DaoImpl<Igv, Integer> implements IDAOIgv, Serializable {

    @Autowired
    protected SessionFactory sessionFactory;

    public Igv ConseguirIgvVigente() throws DAOException {
        try {
            Igv igvVigente = null;
            Date hoy = new Date();
            igvVigente = (Igv) sessionFactory.getCurrentSession().createCriteria(Igv.class)
                    .add(Restrictions.le("inicioPeriodo", hoy))
                    .add(Restrictions.gt("finPeriodo", hoy))
                    .add(Restrictions.like("estadoRegistro", ESTADO_REGISTRO.ACTIVO.getValor()))
                    .uniqueResult();

            return igvVigente;
        } catch (Exception e) {
            throw new DAOException(e.getMessage(), e);
        }

    }
    
    public Igv ConseguirIgvPorFecha(Date date) throws DAOException {
        try {
            Igv igvVigente = null;
            Date hoy = new Date();
            igvVigente = (Igv) sessionFactory.getCurrentSession().createCriteria(Igv.class)
                    .add(Restrictions.le("inicioPeriodo", date))
                    .add(Restrictions.gt("finPeriodo", date))
                    .add(Restrictions.like("estadoRegistro", ESTADO_REGISTRO.ACTIVO.getValor()))
                    .uniqueResult();

            return igvVigente;
        } catch (Exception e) {
            throw new DAOException(e.getMessage(), e);
        }

    }
    
}
